package com.ruoyi.ldzlsb.service.impl;

import java.util.List;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.ldzlsb.mapper.SbMaintenanceItemMapper;
import com.ruoyi.ldzlsb.domain.SbMaintenanceItem;
import com.ruoyi.ldzlsb.service.ISbMaintenanceItemService;

/**
 * 保养项目Service业务层处理
 * 
 * @author anli
 * @date 2025-06-12
 */
@Service
public class SbMaintenanceItemServiceImpl implements ISbMaintenanceItemService 
{
    @Autowired
    private SbMaintenanceItemMapper sbMaintenanceItemMapper;

    /**
     * 查询保养项目
     * 
     * @param itemId 保养项目ID
     * @return 保养项目
     */
    @Override
    public SbMaintenanceItem selectSbMaintenanceItemByItemId(Long itemId)
    {
        return sbMaintenanceItemMapper.selectSbMaintenanceItemByItemId(itemId);
    }

    /**
     * 查询保养项目列表
     * 
     * @param sbMaintenanceItem 保养项目
     * @return 保养项目
     */
    @Override
    public List<SbMaintenanceItem> selectSbMaintenanceItemList(SbMaintenanceItem sbMaintenanceItem)
    {
        return sbMaintenanceItemMapper.selectSbMaintenanceItemList(sbMaintenanceItem);
    }
    
    /**
     * 根据配置ID查询保养项目列表
     * 
     * @param configId 配置ID
     * @return 保养项目集合
     */
    @Override
    public List<SbMaintenanceItem> selectSbMaintenanceItemByConfigId(Long configId)
    {
        return sbMaintenanceItemMapper.selectSbMaintenanceItemByConfigId(configId);
    }

    /**
     * 新增保养项目
     * 
     * @param sbMaintenanceItem 保养项目
     * @return 结果
     */
    @Override
    public int insertSbMaintenanceItem(SbMaintenanceItem sbMaintenanceItem)
    {
        Date now = new Date();
        sbMaintenanceItem.setCreateTime(now);
        sbMaintenanceItem.setUpdateTime(now);
        if (sbMaintenanceItem.getCreateBy() == null)
        {
            sbMaintenanceItem.setCreateBy("system");
        }
        if (sbMaintenanceItem.getUpdateBy() == null)
        {
            sbMaintenanceItem.setUpdateBy(sbMaintenanceItem.getCreateBy());
        }
        if (sbMaintenanceItem.getIsDelete() == null)
        {
            sbMaintenanceItem.setIsDelete("0");
        }
        return sbMaintenanceItemMapper.insertSbMaintenanceItem(sbMaintenanceItem);
    }
    
    /**
     * 批量新增保养项目
     * 
     * @param sbMaintenanceItemList 保养项目列表
     * @return 结果
     */
    @Override
    public int batchInsertSbMaintenanceItems(List<SbMaintenanceItem> sbMaintenanceItemList)
    {
        if (sbMaintenanceItemList != null && !sbMaintenanceItemList.isEmpty()) {
            Date now = new Date();
            for (SbMaintenanceItem item : sbMaintenanceItemList) {
                if (item.getCreateTime() == null) {
                    item.setCreateTime(now);
                }
                if (item.getUpdateTime() == null) {
                    item.setUpdateTime(now);
                }
                if (item.getCreateBy() == null) {
                    item.setCreateBy("system");
                }
                if (item.getUpdateBy() == null) {
                    item.setUpdateBy(item.getCreateBy());
                }
                if (item.getIsDelete() == null) {
                    item.setIsDelete("0");
                }
            }
        }
        return sbMaintenanceItemMapper.batchInsertSbMaintenanceItems(sbMaintenanceItemList);
    }

    /**
     * 修改保养项目
     * 
     * @param sbMaintenanceItem 保养项目
     * @return 结果
     */
    @Override
    public int updateSbMaintenanceItem(SbMaintenanceItem sbMaintenanceItem)
    {
        sbMaintenanceItem.setUpdateTime(new Date());
        return sbMaintenanceItemMapper.updateSbMaintenanceItem(sbMaintenanceItem);
    }

    /**
     * 批量删除保养项目
     * 
     * @param itemIds 需要删除的保养项目ID
     * @return 结果
     */
    @Override
    public int deleteSbMaintenanceItemByItemIds(Long[] itemIds)
    {
        return sbMaintenanceItemMapper.deleteSbMaintenanceItemByItemIds(itemIds);
    }

    /**
     * 删除保养项目信息
     * 
     * @param itemId 保养项目ID
     * @return 结果
     */
    @Override
    public int deleteSbMaintenanceItemByItemId(Long itemId)
    {
        return sbMaintenanceItemMapper.deleteSbMaintenanceItemByItemId(itemId);
    }
    
    /**
     * 批量保存保养项目
     * 
     * @param configId 配置ID
     * @param items 保养项目列表
     * @param username 用户名
     * @return 结果
     */
    @Override
    @Transactional
    public int batchSaveMaintenanceItems(Long configId, List<SbMaintenanceItem> items, String username)
    {
        // 先删除该配置ID下的所有保养项目
        sbMaintenanceItemMapper.deleteSbMaintenanceItemByConfigId(configId);
        
        // 然后批量插入新的保养项目
        if (items != null && !items.isEmpty())
        {
            Date now = new Date();
            int sortOrder = 1;
            for (SbMaintenanceItem item : items)
            {
                item.setConfigId(configId);
                item.setCreateBy(username);
                item.setCreateTime(now);
                item.setUpdateBy(username);
                item.setUpdateTime(now);
                item.setIsDelete("0");
            }
            return sbMaintenanceItemMapper.batchInsertSbMaintenanceItems(items);
        }
        
        return 0;
    }
} 